Barva

Otázka od: delfi

10. 10. 2002 11:00

Hi,
nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)

fce Saturace (aBarva: TColor; aUroven: Integer): TColor;

Jmenuje se to spravne Saturace?

diky

ales


---
Odchozí zpráva neobsahuje viry.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.399 / Virová báze: 226 - datum vydání: 9.10.2002

Odpovedá: ing. Jan Fiala

10. 10. 2002 18:20

Knihovna JCL obsahuje podobne funkce, ktere by ti mohly pomoci, treba
RGBToHSL. Unita JclGraphUtils

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

10.10.2002 delfi:
> Hi,
> nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
> fce Saturace (aBarva: TColor; aUroven: Integer): TColor;
> Jmenuje se to spravne Saturace?

Odpovedá: Peter Surovy

10. 10. 2002 12:25

Ahoj
----- Original Message -----
From: "delfi" <delfi@pocitac.net>
Sent: Thursday, October 10, 2002 10:41 AM
> nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
---nie je to az take jednoduche, ta saturacia o ktorej si
pisal to je jeden vektor v jednom z mnohych farebnych modelov konkr
sa jedna o HSL model. PC primarne skladuje farby
v RGB modeli na nacitanie poloziek mas API funkcie
      GetBValue
      GetGValue
      GetRValue



posuvat a menit odtien by si potom mohol cca aj takto:

farba_R:=GetRValue(farba);
farba_G:=GetGValue(farba);
farba_B:=GetBValue(farba);

nova_farba_R:=farba_R+(cislo v ramci byte);
nova_farba_G:=farba_G+(cislo v ramci byte);
nova_farba_B:=farba_B+(cislo v ramci byte);

nova_farba:=RGB(nova_farba_R,nova_farba_G,nova_farba_B);

da sa pouzit aj alpha kanal (svetlost) ale iba pri bitmapach
s 32 bitmi na pixel;
PS

Odpovedá: Petr Vareka

10. 10. 2002 20:58


----- Original Message -----
From: "ing. Jan Fiala" <jan.fiala@iol.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, October 10, 2002 12:19 PM
Subject: Re: Barva


> Knihovna JCL obsahuje podobne funkce, ktere by ti mohly pomoci, treba
> RGBToHSL. Unita JclGraphUtils
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz
>
> 10.10.2002 delfi:
> > Hi,
> > nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
> > fce Saturace (aBarva: TColor; aUroven: Integer): TColor;
> > Jmenuje se to spravne Saturace?

Nevim presne, co myslis pod pojmem odstin. Pokud je to to, co myslim ja, pak
bych reseni mel.

Barva je vlastne trojmistne cislo v 256-kove soustave; cifra na miste
"jednotek" koduje mix cervene barvy,
cifra na miste "desitek" mix zelene a konecne "stovky" koduji modrou. Kazda
cifra nabyva hodnot 0-255.

Tedy: Barva = B * 256^2 + G * 256 + B. (^ znaci operator
umoci. 10^2=100)

Odtud:
           B = Barva DIV (256^2) , (DIV znaci
podil zaokrouhleny na cele cislo)
           G = (Barva - B * 256) DIV 256
           R = Barva - B * 256^2 - G * 256.

S pozdravem Petr Vareka.

Odpovedá: Ondrej Kelle

14. 10. 2002 18:36

> nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)

Pozri si tiez unitu GraphUtil, su tam prevody RGB na HLS a spet.

HTH
TOndrej